package com.example.hangman_in_android.Model;

import java.util.ArrayList;
import java.util.Random;

public class Galgelogik {
	public ArrayList<String> muligeOrd;
	public ArrayList<String> brugteBogstaver;
	private String ordet;
	private String synligtOrd;
	public int antalKorrekteBogstaver;
	private int antalForkerteBogstaver;
	private String korrekteBogstaver;
	private String forkerteBogstaver;
	private boolean sidsteBogstavVarKorrekt;
	private boolean spilletErVundet;
	private boolean spilletErTabt;

	public void nulstil() {
		muligeOrd = new ArrayList<String>();
		muligeOrd.add("bil");
		muligeOrd.add("computer");
		muligeOrd.add("programmering");
		muligeOrd.add("motorvej");
		muligeOrd.add("busrute");
		muligeOrd.add("gangsti");
		muligeOrd.add("skovsnegl");
		muligeOrd.add("solsort");

		Random random = new Random();
		ordet = muligeOrd.get(random.nextInt(muligeOrd.size()));

		brugteBogstaver = new ArrayList<String>();
		antalForkerteBogstaver = 0;
		antalKorrekteBogstaver = 0;
		korrekteBogstaver = "";
		forkerteBogstaver = "";
		spilletErVundet = false;
		spilletErTabt = false;

		opdaterSynligtOrd();
	}

	public void opdaterSynligtOrd() {
		synligtOrd = "";
		for (int n = 0; n < ordet.length(); n++) {
			String bogstav = ordet.substring(n, n + 1).toLowerCase();
			if (brugteBogstaver.contains(bogstav)) {
				synligtOrd = synligtOrd + bogstav;
			} else {
				synligtOrd = synligtOrd + "*";
			}
		}
	}

	public boolean isSpilletErVundet() {
		if (synligtOrd.contains("*")) {
			spilletErVundet = false;
		} else {
			spilletErVundet = true;
		}

		return spilletErVundet;
	}

	public boolean isSpilletErTabt() {
		if (antalForkerteBogstaver > 5) {
			spilletErTabt = true;
		} else {
			spilletErTabt = false;
		}
		return spilletErTabt;
	}

	public void gaetBogstav(String bogstav) {
		bogstav = bogstav.toLowerCase();
		if (bogstav.length() != 1) {
			return;
		}
		if (bogstav.equals(" ")) {
			return;
		}
		if (brugteBogstaver.contains(bogstav)) {
			return;
		}
		if (spilletErVundet || spilletErTabt) {
			return;
		}

		brugteBogstaver.add(bogstav);

		if (ordet.contains(bogstav)) {
			sidsteBogstavVarKorrekt = true;
			antalKorrekteBogstaver++;
			korrekteBogstaver = bogstav + ", " + korrekteBogstaver;
			System.out.println("Bogstavet var korrekt: " + bogstav);
		} else {
			// Vi gaettede paa et bogstav der ikke var i ordet.
			sidsteBogstavVarKorrekt = false;
			System.out.println("Bogstavet var IKKE korrekt: " + bogstav);
			forkerteBogstaver = bogstav + ", " + forkerteBogstaver;
			antalForkerteBogstaver = antalForkerteBogstaver + 1;
		}
		opdaterSynligtOrd();
	}

	/**
	 * Display
	 */
	public void logStatus() {
		System.out.println(" --------- ");
		if (spilletErTabt) {
			System.out.println("SPILLET ER TABT");
		}
		if (spilletErVundet) {
			System.out.println("SPILLET ER VUNDET");
		}
		System.out.println("ordet = " + ordet);
		System.out.println("synligtOrd = " + synligtOrd);
		System.out.println("forkerteBogstaver = " + antalForkerteBogstaver);
		System.out.println("brugeBogstaver = " + brugteBogstaver);
		System.out.println(" --------- ");
	}

	public String getSynligtOrd() {
		return synligtOrd;
	}

	public String getKorrekteBogstaver() {
		return korrekteBogstaver;
	}

	public String getForkerteBogstaver() {
		return forkerteBogstaver;
	}

	public boolean isSidsteBogstavVarKorrekt() {
		return sidsteBogstavVarKorrekt;
	}

	public String getOrdet() {
		return ordet;
	}

	public ArrayList<String> getBrugteBogstaver() {
		return brugteBogstaver;
	}

	public int getAntalForkerteBogstaver() {
		return antalForkerteBogstaver;
	}

}
